package gui.util;

import javax.swing.*;

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Container;

/**
 * Utility třída pro vytvoření komponenty s <code>BorderLayout</code>em. Má 3
 * komponenty: horní, prostřední a dolní. Mezi nimi je <code>JSeparator</code>
 * přes celou šířku komponenty.
 * 
 * @author Jakub
 */
public class StandardForm
{
	public static final int UPPER = 1;
	public static final int MIDDLE = 2;
	public static final int LOWER = 3;

	private Component top;
	private Component middle;
	private Component bottom;

	private JPanel panel;

	/**
	 * Konstruktor pouze pro prostřední a dolní komponentu.
	 * 
	 * @param middle
	 *           Prostřední komponenta
	 * @param lower
	 *           Dolní komponenta
	 */
	public StandardForm(Component middle, Component lower){
		this(null, middle, lower);
	}

	/**
	 * Konstruktor pro horní, prostřední a dolní komponentu.
	 * 
	 * @param top
	 *           Horní komponenta
	 * @param middle
	 *           Prostřední komponenta
	 * @param bottom
	 *           Dolní komponenta
	 */
	public StandardForm(Component top, Component middle, Component bottom){
		this.top = top;
		this.middle = middle;
		this.bottom = bottom;
		panel = new JPanel(new BorderLayout());

		Box topContainer;
		Box bottomContainer = new Box(BoxLayout.Y_AXIS);

		if(top != null){
			topContainer = new Box(BoxLayout.Y_AXIS);
			topContainer.add(top);
			topContainer.add(new JSeparator());

			panel.add(topContainer, BorderLayout.NORTH);
		}
		panel.add(middle, BorderLayout.CENTER);

		bottomContainer.add(new JSeparator());
		bottomContainer.add(bottom);
		panel.add(bottomContainer, BorderLayout.SOUTH);
	}

	/**
	 * Vrátí hotový <code>Container</code>.
	 */
	public Container getContainer(){
		return panel;
	}
	// NEOTESTOVÁNO
	/*
	 * public void change(Component c, int id){ if(id == UPPER){ top = c; } else
	 * if(id == MIDDLE){ middle = c; } else if(id == LOWER){ bottom = c; } else
	 * throw new IllegalArgumentException("invalid id"); panel.revalidate(); }
	 */
}
